<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="en-US">
<head>
<!-- GenHTML revision 25226-->
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
<title>Immediate and Deferred Evaluation Syntax - The Java EE 6 Tutorial</title>
<meta name="robots" content="index,follow">
<meta name="robots" content="index,follow">
<meta name="date" content="2011-03-01">
<link rel="stylesheet" type="text/css" href="css/default.css">
<link rel="stylesheet" type="text/css" href="css/ipg.css">
<link rel="stylesheet" type="text/css" href="css/javaeetutorial.css">
</head>

<body>

<table border="0" cellpadding="5" cellspacing="0" width="100%">
<tbody>
   <tr valign="top">
      <td width="400px"><p class="toc level1"><a href="docinfo.html">Document Information</a></p>
<p class="toc level1 tocsp"><a href="gexaf.html">Preface</a></p>
<p class="toc level1 tocsp"><a href="gfirp.html">Part&nbsp;I&nbsp;Introduction</a></p>
<p class="toc level2"><a href="bnaaw.html">1.&nbsp;&nbsp;Overview</a></p>
<p class="toc level2"><a href="gfiud.html">2.&nbsp;&nbsp;Using the Tutorial Examples</a></p>
<p class="toc level1 tocsp"><a href="bnadp.html">Part&nbsp;II&nbsp;The Web Tier</a></p>
<p class="toc level2"><a href="bnadr.html">3.&nbsp;&nbsp;Getting Started with Web Applications</a></p>
<p class="toc level2"><a href="bnaph.html">4.&nbsp;&nbsp;JavaServer Faces Technology</a></p>
<p class="toc level2"><a href="giepx.html">5.&nbsp;&nbsp;Introduction to Facelets</a></p>
<p class="toc level2"><a href="gjddd.html">6.&nbsp;&nbsp;Expression Language</a></p>
<p class="toc level3"><a href="bnahq.html">Overview of the EL</a></p>
<div id="scrolltoc" class="onpage">
<p class="toc level3"><a href="">Immediate and Deferred Evaluation Syntax</a></p>
<p class="toc level4"><a href="#bnahs">Immediate Evaluation</a></p>
<p class="toc level4"><a href="#bnaht">Deferred Evaluation</a></p>
</div>
<p class="toc level3 tocsp"><a href="bnahu.html">Value and Method Expressions</a></p>
<p class="toc level4"><a href="bnahu.html#bnahv">Value Expressions</a></p>
<p class="toc level5"><a href="bnahu.html#bnahw">Referencing Objects Using Value Expressions</a></p>
<p class="toc level5"><a href="bnahu.html#bnahx">Referring to Object Properties Using Value Expressions</a></p>
<p class="toc level5"><a href="bnahu.html#bnahy">Where Value Expressions Can Be Used</a></p>
<p class="toc level4 tocsp"><a href="bnahu.html#bnahz">Method Expressions</a></p>
<p class="toc level5"><a href="bnahu.html#gjhbz">Parameterized Method Calls</a></p>
<p class="toc level3 tocsp"><a href="bnaia.html">Defining a Tag Attribute Type</a></p>
<p class="toc level3"><a href="bnaid.html">Literal Expressions</a></p>
<p class="toc level3"><a href="bnaik.html">Operators</a></p>
<p class="toc level3"><a href="bnail.html">Reserved Words</a></p>
<p class="toc level3"><a href="bnaim.html">Examples of EL Expressions</a></p>
<p class="toc level2 tocsp"><a href="bnaqz.html">7.&nbsp;&nbsp;Using JavaServer Faces Technology in Web Pages</a></p>
<p class="toc level2"><a href="gjcut.html">8.&nbsp;&nbsp;Using Converters, Listeners, and Validators</a></p>
<p class="toc level2"><a href="bnatx.html">9.&nbsp;&nbsp;Developing with JavaServer Faces Technology</a></p>
<p class="toc level2"><a href="gkmaa.html">10.&nbsp;&nbsp;JavaServer Faces Technology Advanced Concepts</a></p>
<p class="toc level2"><a href="bnawo.html">11.&nbsp;&nbsp;Configuring JavaServer Faces Applications</a></p>
<p class="toc level2"><a href="gkiow.html">12.&nbsp;&nbsp;Using Ajax with JavaServer Faces Technology</a></p>
<p class="toc level2"><a href="gkhxa.html">13.&nbsp;&nbsp;Advanced Composite Components</a></p>
<p class="toc level2"><a href="bnavg.html">14.&nbsp;&nbsp;Creating Custom UI Components</a></p>
<p class="toc level2"><a href="bnafd.html">15.&nbsp;&nbsp;Java Servlet Technology</a></p>
<p class="toc level2"><a href="bnaxu.html">16.&nbsp;&nbsp;Internationalizing and Localizing Web Applications</a></p>
<p class="toc level1 tocsp"><a href="bnayk.html">Part&nbsp;III&nbsp;Web Services</a></p>
<p class="toc level2"><a href="gijti.html">17.&nbsp;&nbsp;Introduction to Web Services</a></p>
<p class="toc level2"><a href="bnayl.html">18.&nbsp;&nbsp;Building Web Services with JAX-WS</a></p>
<p class="toc level2"><a href="giepu.html">19.&nbsp;&nbsp;Building RESTful Web Services with JAX-RS</a></p>
<p class="toc level2"><a href="gjjxe.html">20.&nbsp;&nbsp;Advanced JAX-RS Features</a></p>
<p class="toc level2"><a href="gkojl.html">21.&nbsp;&nbsp;Running the Advanced JAX-RS Example Application</a></p>
<p class="toc level1 tocsp"><a href="bnblr.html">Part&nbsp;IV&nbsp;Enterprise Beans</a></p>
<p class="toc level2"><a href="gijsz.html">22.&nbsp;&nbsp;Enterprise Beans</a></p>
<p class="toc level2"><a href="gijre.html">23.&nbsp;&nbsp;Getting Started with Enterprise Beans</a></p>
<p class="toc level2"><a href="gijrb.html">24.&nbsp;&nbsp;Running the Enterprise Bean Examples</a></p>
<p class="toc level2"><a href="bnbpk.html">25.&nbsp;&nbsp;A Message-Driven Bean Example</a></p>
<p class="toc level2"><a href="gkcqz.html">26.&nbsp;&nbsp;Using the Embedded Enterprise Bean Container</a></p>
<p class="toc level2"><a href="gkidz.html">27.&nbsp;&nbsp;Using Asynchronous Method Invocation in Session Beans</a></p>
<p class="toc level1 tocsp"><a href="gjbnr.html">Part&nbsp;V&nbsp;Contexts and Dependency Injection for the Java EE Platform</a></p>
<p class="toc level2"><a href="giwhb.html">28.&nbsp;&nbsp;Introduction to Contexts and Dependency Injection for the Java EE Platform</a></p>
<p class="toc level2"><a href="gjbls.html">29.&nbsp;&nbsp;Running the Basic Contexts and Dependency Injection Examples</a></p>
<p class="toc level2"><a href="gjehi.html">30.&nbsp;&nbsp;Contexts and Dependency Injection for the Java EE Platform: Advanced Topics</a></p>
<p class="toc level2"><a href="gkhre.html">31.&nbsp;&nbsp;Running the Advanced Contexts and Dependency Injection Examples</a></p>
<p class="toc level1 tocsp"><a href="bnbpy.html">Part&nbsp;VI&nbsp;Persistence</a></p>
<p class="toc level2"><a href="bnbpz.html">32.&nbsp;&nbsp;Introduction to the Java Persistence API</a></p>
<p class="toc level2"><a href="gijst.html">33.&nbsp;&nbsp;Running the Persistence Examples</a></p>
<p class="toc level2"><a href="bnbtg.html">34.&nbsp;&nbsp;The Java Persistence Query Language</a></p>
<p class="toc level2"><a href="gjitv.html">35.&nbsp;&nbsp;Using the Criteria API to Create Queries</a></p>
<p class="toc level2"><a href="gkjiq.html">36.&nbsp;&nbsp;Creating and Using String-Based Criteria Queries</a></p>
<p class="toc level2"><a href="gkjjf.html">37.&nbsp;&nbsp;Controlling Concurrent Access to Entity Data with Locking</a></p>
<p class="toc level2"><a href="gkjia.html">38.&nbsp;&nbsp;Improving the Performance of Java Persistence API Applications By Setting a Second-Level Cache</a></p>
<p class="toc level1 tocsp"><a href="gijrp.html">Part&nbsp;VII&nbsp;Security</a></p>
<p class="toc level2"><a href="bnbwj.html">39.&nbsp;&nbsp;Introduction to Security in the Java EE Platform</a></p>
<p class="toc level2"><a href="bncas.html">40.&nbsp;&nbsp;Getting Started Securing Web Applications</a></p>
<p class="toc level2"><a href="bnbyk.html">41.&nbsp;&nbsp;Getting Started Securing Enterprise Applications</a></p>
<p class="toc level1 tocsp"><a href="gijue.html">Part&nbsp;VIII&nbsp;Java EE Supporting Technologies</a></p>
<p class="toc level2"><a href="gijto.html">42.&nbsp;&nbsp;Introduction to Java EE Supporting Technologies</a></p>
<p class="toc level2"><a href="bncih.html">43.&nbsp;&nbsp;Transactions</a></p>
<p class="toc level2"><a href="bncjh.html">44.&nbsp;&nbsp;Resource Connections</a></p>
<p class="toc level2"><a href="bncdq.html">45.&nbsp;&nbsp;Java Message Service Concepts</a></p>
<p class="toc level2"><a href="bncgv.html">46.&nbsp;&nbsp;Java Message Service Examples</a></p>
<p class="toc level2"><a href="gkahp.html">47.&nbsp;&nbsp;Advanced Bean Validation Concepts and Examples</a></p>
<p class="toc level2"><a href="gkeed.html">48.&nbsp;&nbsp;Using Java EE Interceptors</a></p>
<p class="toc level1 tocsp"><a href="gkgjw.html">Part&nbsp;IX&nbsp;Case Studies</a></p>
<p class="toc level2"><a href="gkaee.html">49.&nbsp;&nbsp;Duke's Tutoring Case Study Example</a></p>
<p class="toc level1 tocsp"><a href="idx-1.html">Index</a></p>
</td>
      <td width="10px">&nbsp;</td>
      <td>
         <div class="header">
             <div class="banner">
                <table width="100%" border="0" cellpadding="5" cellspacing="0">
                   <tbody>
                      <tr>
                         <td valign="bottom"><p class="Banner">The Java EE 6 Tutorial
</p></td>
                         <td align="right"  valign="bottom"><img src="graphics/javalogo.png" alt="Java Coffee Cup logo"></td>
                      </tr>
                   </tbody>
                </table>
             </div>

             <div class="header-links">
	         <a href="./index.html">Home</a> | 
<a href="../information/download.html">Download</a> | 
<a href="./javaeetutorial6.pdf">PDF</a> | 
<a href="../information/faq.html">FAQ</a> | 
<a href="http://download.oracle.com/javaee/feedback.htm">Feedback</a>

             </div>
             <div class="navigation">
                 <a href="bnahq.html"><img src="graphics/leftButton.gif" border="0" alt="Previous" title="Previous"></a>
                 <a href="p1.html"><img src="graphics/upButton.gif" border="0" alt="Contents" title="Contents"></a>
                 <a href="bnahu.html"><img src="graphics/rightButton.gif" border="0" alt="Next" title="Next"></a>
             </div>
         </div>

	 <div class="maincontent">      	 
             

<a name="bnahr"></a><h2>Immediate and Deferred Evaluation Syntax</h2>
<p><a name="indexterm-252"></a><a name="indexterm-253"></a>The EL supports both immediate and deferred evaluation of expressions. Immediate evaluation means
that the expression is evaluated and the result returned as soon as the
page is first rendered. Deferred evaluation means that the technology using the expression language
can use its own machinery to evaluate the expression sometime later during the
page&rsquo;s lifecycle, whenever it is appropriate to do so.</p>

<p>Those expressions that are evaluated immediately use the <tt>${}</tt> syntax. Expressions whose evaluation
is deferred use the <tt>#{}</tt> syntax.</p>

<p>Because of its multiphase lifecycle, JavaServer Faces technology uses mostly deferred evaluation expressions.
During the lifecycle, component events are handled, data is validated, and other tasks
are performed in a particular order. Therefore, a JavaServer Faces implementation must defer
evaluation of expressions until the appropriate point in the lifecycle.</p>

<p>Other technologies using the EL might have different reasons for using deferred expressions.</p>



<a name="bnahs"></a><h3>Immediate Evaluation</h3>
<p>All expressions using the <tt>${}</tt> syntax are evaluated immediately. These expressions can be
used only within template text or as the value of a tag attribute
that can accept runtime expressions.</p>

<p>The following example shows a tag whose <tt>value</tt> attribute references an immediate evaluation
expression that gets the total price from the session-scoped bean named <tt>cart</tt>:</p>

<pre>&lt;fmt:formatNumber value="${sessionScope.cart.total}"/></pre><p>The JavaServer Faces implementation evaluates the expression <tt>${sessionScope.cart.total}</tt>, converts it, and passes
the returned value to the tag handler.</p>

<p>Immediate evaluation expressions are always read-only value expressions. The preceding example expression cannot
set the total price, but instead can only get the total price from
the cart bean.</p>



<a name="bnaht"></a><h3>Deferred Evaluation</h3>
<p>Deferred evaluation expressions take the form <tt>#{expr}</tt> and can be evaluated at other
phases of a page lifecycle as defined by whatever technology is using the
expression. In the case of JavaServer Faces technology, its controller can evaluate the
expression at different phases of the lifecycle, depending on how the expression is
being used in the page.</p>

<p>The following example shows a JavaServer Faces <tt>inputText</tt> tag, which represents a text
field component into which a user enters a value. The <tt>inputText</tt> tag&rsquo;s <tt>value</tt>
attribute references a deferred evaluation expression that points to the <tt>name</tt> property of the
<tt>customer</tt> bean:</p>

<pre>&lt;h:inputText id="name" value="#{customer.name}" /></pre><p>For an initial request of the page containing this tag, the JavaServer Faces
implementation evaluates the <tt>#{customer.name}</tt> expression during the render-response phase of the lifecycle. During
this phase, the expression merely accesses the value of <tt>name</tt> from the <tt>customer</tt>
bean, as is done in immediate evaluation.</p>

<p>For a postback request, the JavaServer Faces implementation evaluates the expression at different
phases of the lifecycle, during which the value is retrieved from the request,
validated, and propagated to the <tt>customer</tt> bean.</p>

<p>As shown in this example, deferred evaluation expressions can be</p>


<ul><li><p>Value expressions that can be used to both read and write data</p>

</li>
<li><p>Method expressions</p>

</li></ul>
<p>Value expressions (both immediate and deferred) and method expressions are explained in the
next section.</p>


         </div>
         <div class="navigation">
             <a href="bnahq.html"><img src="graphics/leftButton.gif" border="0" alt="Previous" title="Previous"></a>
             <a href="p1.html"><img src="graphics/upButton.gif" border="0" alt="Contents" title="Contents"></a>
             <a href="bnahu.html"><img src="graphics/rightButton.gif" border="0" alt="Next" title="Next"></a>
         </div>

         <div class="copyright">
      	    <p>Copyright &copy; 2011, Oracle and/or its affiliates. All rights reserved. <a href="docinfo.html">Legal Notices</a></p>
      	 </div>

      </td>
   </tr>
</tbody>
</table>
</body>
</html>

